"""
为了保持策略代码简洁而设计的全局API函数。
这些函数在回测引擎内部会被正确地路由和执行。
"""

# 全局变量，用于存储当前的Cerebro实例
_current_cerebro = None


def set_cerebro(cerebro):
    """
    设置当前的Cerebro实例，供内部使用
    """
    global _current_cerebro
    _current_cerebro = cerebro


def order(asset, amount, style='amount', limit_price=None, stop_price=None):
    """下单函数
    
    参数:
        asset: 资产代码
        amount: 交易数量
        style: 下单方式，'amount'表示指定数量，'target'表示目标持仓数量
        limit_price: 限价（可选）
        stop_price: 止损价（可选）
    """
    if _current_cerebro:
        _current_cerebro._create_order(asset, amount, style)
    else:
        print(f"[API] Order placed for {asset}: amount={amount}, style={style}")


def log(message):
    """日志记录函数"""
    print(f"[Log] {message}")


def get_open_orders():
    """获取所有未成交订单"""
    if _current_cerebro and hasattr(_current_cerebro, '_orders_to_execute'):
        return _current_cerebro._orders_to_execute
    return []
